fix(ci): rotate iPad showcase captures without Simulator UI scripting - #5094
Conversation
The landscape iPad captures from #5065 rotate the simulator by AppleScript-clicking Simulator's menus, which CI cannot do: the runner denies osascript Accessibility access (error -1719), and simctl has no orientation command. Rotate from inside the app instead: - t3-native-controls gains getShowcaseOrientation (launch-arg reader), applyShowcaseOrientation (UIWindowScene.requestGeometryUpdate), and getInterfaceOrientation so the coordinator can verify the rotation actually took effect and retry attempts made before the scene was foreground-active. - iPadOS ignores programmatic orientation for multitasking-capable apps, so the capture build sets requireFullScreen (env-gated via T3_SHOWCASE_CAPTURE_BUILD; production builds are unchanged). - iPadOS 26 windowing would put a requires-full-screen app in a fixed portrait compatibility window, so the harness switches the simulator to Full Screen Apps mode (SBChamoisWindowingEnabled=false + SpringBoard restart) before landscape captures. - The framebuffer is now natively landscape, so the sips post-rotation is gone along with the osascript helper. Verified locally end to end from a clean simulator: the iPad capture renders upright landscape at 2752x2064 and passes validation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
| // portrait compatibility window, which defeats the in-app landscape rotation | ||
| // the capture build relies on. Switch the device to Full Screen Apps mode | ||
| // (Settings > Multitasking & Gestures) and restart SpringBoard to apply it. | ||
| async function ensureIosFullScreenAppsMode(udid: string): Promise<void> { |
There was a problem hiding this comment.
🟡 Medium scripts/mobile-showcase.ts:802
ensureIosFullScreenAppsMode permanently writes SBChamoisWindowingEnabled=false to the simulator and never restores the previous value. Running a landscape capture against a pre-existing developer simulator leaves that simulator stuck in Full Screen Apps mode after the harness exits, silently changing its multitasking configuration. The function reads the current value (and early-returns when already 0) but neither records it for cleanup nor restores it in the finally block. Consider capturing the prior value and writing it back during iOS cleanup, or only toggling the setting on simulators the runner created.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @scripts/mobile-showcase.ts around line 802:
`ensureIosFullScreenAppsMode` permanently writes `SBChamoisWindowingEnabled=false` to the simulator and never restores the previous value. Running a landscape capture against a pre-existing developer simulator leaves that simulator stuck in Full Screen Apps mode after the harness exits, silently changing its multitasking configuration. The function reads the current value (and early-returns when already `0`) but neither records it for cleanup nor restores it in the `finally` block. Consider capturing the prior value and writing it back during iOS cleanup, or only toggling the setting on simulators the runner created.
…ulators The first CI run captured a floating portrait-screen window: on a brand new device SBChamoisWindowingEnabled alone is not honored. The Settings toggle writes three SpringBoard keys (Chamois windowing, Medusa multitasking, flexible-windowing stage creation), so write all three, reboot the simulator instead of kickstarting SpringBoard, and verify the mode applied. Also gate showcase scene readiness on the orientation having settled, and report orientation from screen bounds so a floating landscape window on a portrait screen counts as portrait — an early or failed rotation now times out loudly instead of shipping wrong-size screenshots. Verified locally against a freshly created simulator (the CI-equivalent path): upright landscape 2752x2064, validation passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
Bugbot Autofix is ON, but a cloud agent failed to start.
Reviewed by Cursor Bugbot for commit 87ff819. Configure here.
| "-bool", | ||
| "false", | ||
| ]); | ||
| } |
There was a problem hiding this comment.
Early exit skips multitasking keys
Medium Severity
The ensureIosFullScreenAppsMode function exits early if SBChamoisWindowingEnabled is 0. This is problematic because fully disabling iPadOS windowing now requires setting three SpringBoard keys. If the other two keys remain enabled, simulators can retain windowing behavior, causing landscape rotation and orientation checks to fail, which leads to showcase capture timeouts or validation failures.
Reviewed by Cursor Bugbot for commit 87ff819. Configure here.
ApprovabilityVerdict: Needs human review 1 blocking correctness issue found. CI/screenshot capture tooling changes with two unresolved review comments identifying potential bugs: simulator settings are not restored after capture, and the early-exit logic may leave multitasking keys in an inconsistent state. These issues warrant human review before merging. You can customize Macroscope's approvability policy. Learn more. |
…ortrait A headless CI simulator keeps its display portrait while the rotated app renders sideways inside it (with Simulator.app attached, the display itself rotates and no correction is needed). Detect which case we are in from the captured PNG's dimensions and rotate 270 degrees only when the buffer is portrait — verified against the actual CI capture. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
## What's Changed * feat(cli): `npx t3 pair` - generate QR code from a running server by @t3dotgg in pingdotgg/t3code#4955 * fix(server): self-update no longer rolls itself back on restart by @t3dotgg in pingdotgg/t3code#5095 * fix(ci): rotate iPad showcase captures without Simulator UI scripting by @juliusmarminge in pingdotgg/t3code#5094 * feat(web): render terminals with libghostty-vt by @StiensWout in pingdotgg/t3code#4860 * refactor: move the canonical libghostty-vt vendor to the repository root by @StiensWout in pingdotgg/t3code#5102 **Full Changelog**: pingdotgg/t3code@v0.0.32-nightly.20260731.964...v0.0.32-nightly.20260731.965 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.32-nightly.20260731.965
* Fix incorrect pluralization of “entry” (pingdotgg#3933) * feat(server): title background-task work-log rows with the task name (pingdotgg#3751) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: delegate OpenCode session titles to provider (pingdotgg#3720) * Archive selected threads from the context menu (pingdotgg#3895) * fix(cli): support force removing projects (pingdotgg#3922) * fix: allow sidebar to be shrunk when wider than viewport (pingdotgg#2456) Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(codex): show web search query and url in tool call details (pingdotgg#2093) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Add Codex launch arguments setting (pingdotgg#2892) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: root <root@localhost.localdomain> * [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Regenerate Codex reset credit protocol bindings (pingdotgg#4173) Co-authored-by: codex <codex@users.noreply.github.com> * fix(preview): preserve direct localhost navigation (pingdotgg#3939) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163) Co-authored-by: codex <codex@users.noreply.github.com> * Gate iOS glass layout on native support (pingdotgg#4032) Co-authored-by: codex <codex@users.noreply.github.com> * fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): use CLI for OpenCode health check instead of spawning server (pingdotgg#4153) * fix(web): scope timeline minimap hover target to the side gutter (pingdotgg#3869) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * [codex] show complete approval details (pingdotgg#4111) * fix(web): paint text selection over composer chips (pingdotgg#4139) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * [codex] preserve custom model slugs (pingdotgg#4168) * fix(web): preview workspace images in the file panel (pingdotgg#3996) Co-authored-by: Rhiz3K <rhiz3k@protonmail.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * feat(web): drag files from the explorer into the chat composer (pingdotgg#4140) Co-authored-by: Julius Marminge <julius0216@outlook.com> Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * fix(desktop): preserve main window bounds (pingdotgg#3851) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Pass CLI OAuth config to hosted web deploy (pingdotgg#4186) Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): always show environment chip for remote projects (pingdotgg#4217) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): keep composer editable while disconnected (pingdotgg#4241) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015) Co-authored-by: codex <codex@users.noreply.github.com> * Preserve connecting status while a turn starts (pingdotgg#4101) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): stop restoring stale OpenCode models (pingdotgg#4095) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] keep scoped package references as text (pingdotgg#4167) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(web): default provider selection for users without Codex (pingdotgg#4117) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * Unify temporary worktree branch naming (pingdotgg#4278) * fix(web): use message-square icon for settled icon-less project threads in sidebar v2 (pingdotgg#4279) * Stabilize sidebar settling animations (pingdotgg#4280) * Restore Copy Link in chat link context menu (pingdotgg#4161) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog (pingdotgg#4213) * Preserve draft thread highlighting during promotion (pingdotgg#4283) Co-authored-by: codex <codex@users.noreply.github.com> * Move mobile working timer into the thread timeline (pingdotgg#4285) * Stabilize PR status lookups and provider session lifecycle (pingdotgg#4281) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: open command palette instead of custom dialog for new thread picker in SidebarV2 (pingdotgg#4269) * fix(server): don't drop sticky PR fallback when remote URL can't be resolved (pingdotgg#4289) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add remote server updates and standalone service management (pingdotgg#4286) Co-authored-by: codex <codex@users.noreply.github.com> * Refine light-mode sidebar surfaces (pingdotgg#4268) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): don't mark Android VPN/Tailscale as offline when connected (pingdotgg#3949) * improve and prevent silent thread branch drift and PR fetching (pingdotgg#2284) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): refresh application surfaces * style(web): polish dark mode dialogs * fix(web): unify and tune glass surfaces Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): apply glass opacity to thread tooltip * fix(web): override thread tooltip background * fix(web): apply glass opacity to model picker * style(web): polish glass opacity slider * fix(web): apply glass opacity to command palette * fix(web): add glass composer alerts * fix(web): honor composer glass opacity * test(web): stabilize timeline module setup * style(web): fade settings content beneath navbar * test(desktop): include glass opacity in settings fixture * fix(web): address redesign review findings * fix(web): sync provider banner dismissal * fix(web): new-thread defaults ignored for remote environments (pingdotgg#4276) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add shared t3.json project configuration support (pingdotgg#4317) * Restore light-mode surfaces and refine dialog styling - Restore light-mode glass, dialog, dropdown, and composer colors - Refine provider wizard, changed-file cards, sidebar controls, and buttons - Update wizard step tests for the new list structure * Unify dialog glass and fix composer overlays (pingdotgg#4365) Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): warn before silent Windows updates (pingdotgg#4350) * [codex] Move project grouping to General settings (pingdotgg#4313) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Group project scopes in mobile thread lists (pingdotgg#4314) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Move mobile project grouping to General settings (pingdotgg#4315) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Deduplicate connection failure messaging (pingdotgg#4367) Co-authored-by: codex <codex@users.noreply.github.com> * Restore grouped project filtering in Sidebar V2 (pingdotgg#4282) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * [codex] restore Sidebar V2 project actions (pingdotgg#4373) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Group projects in new-thread pickers (pingdotgg#4312) Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): restore dark composer toolbar styling * Fix thread tooltip folder icon color (pingdotgg#4383) * fix(server): parse CLI version in update preflight (pingdotgg#4389) * fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort (pingdotgg#4274) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix logical project grouping labels on mobile (pingdotgg#4391) Co-authored-by: codex <codex@users.noreply.github.com> * Add preview color scheme controls and simplify project grouping (pingdotgg#4385) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(cli): publish nightly branded favicons (pingdotgg#4372) * Fix thread loading flash (pingdotgg#4396) * fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR (pingdotgg#4309) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix composer context strip alignment and glass shell (pingdotgg#4404) * Polish iOS git progress overlay with glass effects (pingdotgg#4387) * Improve composer glass fallbacks (pingdotgg#4406) Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): collapse large git diffs by default to make chat more readable (pingdotgg#4409) * Stop new threads inheriting checkout/branch from viewed thread (pingdotgg#4411) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: tone down branch-mismatch banner (pingdotgg#4416) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): keep settled threads reachable when opened directly (pingdotgg#4413) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(sidebar-v2): thread snoozing (pingdotgg#4311) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: maria <maria@kuuro.net> * Upgrade Clerk packages and Expo integration (pingdotgg#4440) * Increase light-mode contrast for user message bubbles (pingdotgg#4441) * Restore model picker layout and retain iterative test state (pingdotgg#4450) Co-authored-by: codex <codex@users.noreply.github.com> * Color settled PR labels on hover (pingdotgg#4451) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Fix glass hover compositing artifacts (pingdotgg#4446) Co-authored-by: codex <codex@users.noreply.github.com> * Add Claude Opus 5 model (pingdotgg#4472) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Theo Browne <me@t3.gg> * feat(web): add collapse-all toggle to diff panel (pingdotgg#4475) * feat(web): show fast mode as a bolt instead of a "Normal" label (pingdotgg#4488) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(dev): skip browser-blocked ports (pingdotgg#4608) * fix: cut websocket throughput in half by pruning activity payloads (pingdotgg#4622) * perf(mobile): defer work-log detail serialization (pingdotgg#4607) * test: account for lazy thread feed details (pingdotgg#4628) * feat(relay): limit managed tunnels per user (pingdotgg#4530) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add managed tunnel limits migration (pingdotgg#4635) * Add background preview capture and picture-in-picture support (pingdotgg#4397) Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Upgrade Effect and Alchemy betas (pingdotgg#4643) Prepare Relay production infrastructure for the PlanetScale PS_20 HA topology, upgrade Effect and Alchemy to compatible betas, reconcile migration state, and preserve patched MCP session termination behavior.\n\nCo-authored-by: codex <codex@users.noreply.github.com> * feat: allow new thread creation through project breadcrumbs (pingdotgg#4638) * fix(web): scope PR state to the thread branch (pingdotgg#4460) Co-authored-by: codex <codex@users.noreply.github.com> * Drop redundant Relay user indexes (pingdotgg#4648) Co-authored-by: codex <codex@users.noreply.github.com> * feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix Relay Worker RuntimeContext wiring (pingdotgg#4653) Co-authored-by: codex <codex@users.noreply.github.com> * Fix live sidebar resize limits and defer Alchemy runtime context (pingdotgg#4655) * fix(web): constrain branch toolbar context (pingdotgg#4657) * Keep MCP credentials alive across provider turns (pingdotgg#4659) * fix: close actions dropdown when editing (pingdotgg#4660) * fix(preview): stabilize PiP viewport identity (pingdotgg#4661) Co-authored-by: codex <codex@users.noreply.github.com> * Add glass styling for thread tooltips and simplify preview tab handling (pingdotgg#4665) * Use tarball archiving for hosted web deploys (pingdotgg#4669) * fix(server): bound editor discovery during config loading (pingdotgg#4291) * Prevent draft thread detail polling before shell registration (pingdotgg#4670) Co-authored-by: codex <codex@users.noreply.github.com> * feat: add configurable source control writing settings (pingdotgg#4204) Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * feat(diff-panel): show total line additions and deletions (pingdotgg#4674) * Clear provider update actions while updating (pingdotgg#4676) * Fix sidebar highlighting for draft threads (pingdotgg#4679) * Use glass surfaces for web toasts (pingdotgg#4681) * Show origin ref in branch trigger label (pingdotgg#4680) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) (pingdotgg#4675) * chore(release): prepare v0.0.29 * Add OTA update checks to mobile settings (pingdotgg#4686) * fix(mobile): threads load snapped to bottom on iOS (pingdotgg#4689) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(web): 33 web UI fixes (pingdotgg#4700) * Make mobile Thread List v2 the default (pingdotgg#4717) * Fix mobile showcase workflow without Clerk (pingdotgg#4718) * Fix relay credential lookup for unlinked environments (pingdotgg#4692) Co-authored-by: codex <codex@users.noreply.github.com> * Settle merged PR threads immediately (pingdotgg#4704) * feat(web): add maria's sidebar header artwork toggle (pingdotgg#4652) * feat(web): add appearance settings category (pingdotgg#4715) * fix(desktop): allow updater-controlled relaunch (pingdotgg#4721) * fix(web): prevent diff panel scroll jumping (pingdotgg#4724) * Link inline code file paths in chat markdown (pingdotgg#4726) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730) Co-authored-by: Claude <noreply@anthropic.com> * perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * docs: overhaul agent guidance (pingdotgg#4782) * Prevent sidebar row labels from truncating (pingdotgg#4789) * perf(server): gzip large thread snapshots (pingdotgg#4788) * fix(web): stashed prompts now survive switching providers (pingdotgg#4787) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix Git ref refresh resource storms (pingdotgg#4727) Co-authored-by: codex <codex@users.noreply.github.com> * perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): defer command palette filesystem navigation (pingdotgg#2109) Co-authored-by: codex <codex@users.noreply.github.com> * fix(release): skip scripts during Vercel installs (pingdotgg#4796) * refactor(client): share filesystem browse navigation (pingdotgg#4797) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): defer filesystem navigation (pingdotgg#4799) Co-authored-by: codex <codex@users.noreply.github.com> * refactor(server): use native HTTP compression streams (pingdotgg#4798) Co-authored-by: codex <codex@users.noreply.github.com> * Remove Connect waitlist and add GA announcement tooling (pingdotgg#4691) * Fix Connect sign-in settings label (pingdotgg#4806) * chore(release): prepare v0.0.30 * fix(desktop): restore T3 Connect sign-in (pingdotgg#4809) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Simplify files panel header (pingdotgg#4828) * build(desktop): reduce installed app size by ~300MB (pingdotgg#4824) * Update model version from claude-opus-4-8 to claude-opus-5 (pingdotgg#4832) * Preserve the thread shell while detail loads (pingdotgg#4830) * Reduce idle work and disk churn with native resource diagnostics (pingdotgg#2679) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): detect repositories after initialization (pingdotgg#4848) * perf(server): merge separate staged/unstaged numstat calls into single diff HEAD --numstat (pingdotgg#4843) * fix(git): disable external diff for review diff previews (pingdotgg#4854) * Fix editable file focus and live syntax highlighting (pingdotgg#3979) * fix(web): remember the rendered-markdown choice across threads (pingdotgg#4853) Co-authored-by: Simon Doba <simon.doba@orbit.de> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> * chore(release): prepare v0.0.31 * fix(mobile): reduce thread feed scroll jank (pingdotgg#4874) * fix(web): restore sidebar v2 thread actions and terminal icon (pingdotgg#4712) * fix(web): settle button now works on hover, not just right-click (pingdotgg#4905) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(clients): disable add project while disconnected (pingdotgg#4834) * fix(composer): hide default Codex service tier (pingdotgg#4784) * docs: link iOS and Android app store downloads (pingdotgg#4902) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): align remote server update action (pingdotgg#4731) * fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943) * perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): show Codex fast mode as a bolt (pingdotgg#4947) * docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): support dragged images in the composer (pingdotgg#4953) * fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * perf(mobile): reconnect environments immediately on resume (pingdotgg#4878) * feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): regenerate thread titles from sidebar (pingdotgg#4810) * fix(web): show server update progress through reconnect (pingdotgg#4903) * feat(search): find threads by conversation content (pingdotgg#4959) * fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): server updates no longer look like warnings (pingdotgg#4992) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * Check for mobile app updates on launch (pingdotgg#4958) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984) * fix(server): restore PR detection without HOME (pingdotgg#4985) * fix(web): fill fast mode icon (pingdotgg#5004) * fix: cache project favicons across web and mobile (pingdotgg#4767) * perf(ci): cut stale runs and redundant setup (pingdotgg#4802) * chore(mobile): bump app version to 1.0.1 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * style(web): make scroll-to-end pill translucent (pingdotgg#5036) * fix(ci): drop sparse-checkout from EAS workflows actions/checkout implements sparse-checkout with --filter=blob:none, so the runner repo is a partial clone missing the .repos/ blobs. eas-cli archives the project via `git clone --depth 1 file://<workspace>`, which upload-pack cannot serve from a partial clone and exits 128 (pingdotgg#4802 broke both EAS build workflows this way). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008) * feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(mobile): remove unnecessary photo library permission (pingdotgg#4929) * fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990) * fix(mobile): restore iOS Threads branding (pingdotgg#4862) * chore: add mobile issue template area (pingdotgg#4895) * fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771) Co-authored-by: Claude Opus 5 <noreply@anthropic.com> * fix(mobile): accept Android clipboard images in composer (pingdotgg#4836) * fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861) * fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057) * fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065) * fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066) * feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): render terminals with libghostty-vt (pingdotgg#4860) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(mobile): add thread snoozing (pingdotgg#5053) * feat(mobile): make settled threads collapsible (pingdotgg#5056) * follow-up normalization after pingdotgg#4700. (pingdotgg#4498) Co-authored-by: T3 Code Test <t3code-test@example.com> * feat(web): search threads from the sidebar (pingdotgg#4769) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(release): prepare Command Center desktop v1 * fix(ci): allow public release publisher identity * fix(web): avoid Windows preview path collision * test(release): reject Windows module path collisions * fix(release): bundle command center core * fix: audit preserved upstream history safely * feat(providers): add Kimi, subagents, and usage analytics * fix(ci): repair reconnects and PNG safety scanning * test(desktop): update Clerk environment fixture * fix(ci): align provider and server integration contracts * perf(web): skip impossible image encodings --------- Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: mel <mcmelon@nodiumhosting.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Tristan Knight <tris203@gmail.com> Co-authored-by: Christoph Herzog <a.github@omega-id.com> Co-authored-by: Andrew Barnes <bortstheboat@gmail.com> Co-authored-by: Shoaib <shoaib050326@gmail.com> Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com> Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: root <root@localhost.localdomain> Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com> Co-authored-by: Vadym Kotai <vdmkotai@gmail.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com> Co-authored-by: Maxwell Young <maxtheyoung@gmail.com> Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com> Co-authored-by: Rhiz3K <rhiz3k@protonmail.com> Co-authored-by: Anirudh Coontoor <me@anirudhs.net> Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com> Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Leonel Rivas <encriptandost@gmail.com> Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com> Co-authored-by: Ishan <ishansachu1@gmail.com> Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com> Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com> Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com> Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com> Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> Co-authored-by: tomlit <tomlit@gmail.com> Co-authored-by: jan <hi@4bs3nt.com> Co-authored-by: Alex Southwell <saphid@gmail.com> Co-authored-by: Max Katz <me@maxkatz.me> Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Alex <me@pixp.cc> Co-authored-by: wukko <me@wukko.me> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com> Co-authored-by: Jake Leventhal <jakeleventhal@me.com> Co-authored-by: Simon Doba <simon.doba@hotmail.de> Co-authored-by: Simon Doba <simon.doba@orbit.de> Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com> Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com> Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com> Co-authored-by: Elaine Lyons <elaine@lyons.app> Co-authored-by: Simone <lucenz@proton.me> Co-authored-by: Max Anderson <max.a.anderson95@gmail.com> Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com> Co-authored-by: Mike Olson <mwolson@member.fsf.org> Co-authored-by: T3 Code Test <t3code-test@example.com> Co-authored-by: atryan <atryan@users.noreply.github.com>
* fix: delegate OpenCode session titles to provider (pingdotgg#3720) * Archive selected threads from the context menu (pingdotgg#3895) * fix(cli): support force removing projects (pingdotgg#3922) * fix: allow sidebar to be shrunk when wider than viewport (pingdotgg#2456) Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(codex): show web search query and url in tool call details (pingdotgg#2093) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Add Codex launch arguments setting (pingdotgg#2892) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: root <root@localhost.localdomain> * [orchestration] Clear stale active turn when session becomes inactive (pingdotgg#3159) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Regenerate Codex reset credit protocol bindings (pingdotgg#4173) Co-authored-by: codex <codex@users.noreply.github.com> * fix(preview): preserve direct localhost navigation (pingdotgg#3939) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * Synchronize mobile threads with authoritative shell snapshots (pingdotgg#4163) Co-authored-by: codex <codex@users.noreply.github.com> * Gate iOS glass layout on native support (pingdotgg#4032) Co-authored-by: codex <codex@users.noreply.github.com> * fix(opencode): resume the OpenCode session on follow-ups instead of starting an empty one (pingdotgg#3617) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): use CLI for OpenCode health check instead of spawning server (pingdotgg#4153) * fix(web): scope timeline minimap hover target to the side gutter (pingdotgg#3869) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * [codex] show complete approval details (pingdotgg#4111) * fix(web): paint text selection over composer chips (pingdotgg#4139) Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * [codex] preserve custom model slugs (pingdotgg#4168) * fix(web): preview workspace images in the file panel (pingdotgg#3996) Co-authored-by: Rhiz3K <rhiz3k@protonmail.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * feat(web): drag files from the explorer into the chat composer (pingdotgg#4140) Co-authored-by: Julius Marminge <julius0216@outlook.com> Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * fix(desktop): preserve main window bounds (pingdotgg#3851) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * perf(orchestration): speed up new-chat propagation and offline catch-up (pingdotgg#4177) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * Finale: upgrade changed files card to fix various UI issues (pingdotgg#4113) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Pass CLI OAuth config to hosted web deploy (pingdotgg#4186) Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): always show environment chip for remote projects (pingdotgg#4217) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): keep composer editable while disconnected (pingdotgg#4241) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: better defaults — Claude 1M context, Codex gpt-5.6, worktrees from origin main (pingdotgg#4240) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(claude): handle all SDK stream messages; stop spurious work-log warning rows (pingdotgg#4244) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Sidebar v2 beta: flat thread list with a server-backed settled lifecycle (pingdotgg#4026) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> * fix(settings): validate the add-provider wizard step before advancing (pingdotgg#2813) (pingdotgg#3100) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * fix(claude): isolate capability probe from user MCP servers (pingdotgg#4015) Co-authored-by: codex <codex@users.noreply.github.com> * Preserve connecting status while a turn starts (pingdotgg#4101) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): stop restoring stale OpenCode models (pingdotgg#4095) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] keep scoped package references as text (pingdotgg#4167) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(web): default provider selection for users without Codex (pingdotgg#4117) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * Unify temporary worktree branch naming (pingdotgg#4278) * fix(web): use message-square icon for settled icon-less project threads in sidebar v2 (pingdotgg#4279) * Stabilize sidebar settling animations (pingdotgg#4280) * Restore Copy Link in chat link context menu (pingdotgg#4161) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(desktop): handle EPIPE errors on stdout/stderr to prevent crash dialog (pingdotgg#4213) * Preserve draft thread highlighting during promotion (pingdotgg#4283) Co-authored-by: codex <codex@users.noreply.github.com> * Move mobile working timer into the thread timeline (pingdotgg#4285) * Stabilize PR status lookups and provider session lifecycle (pingdotgg#4281) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: open command palette instead of custom dialog for new thread picker in SidebarV2 (pingdotgg#4269) * fix(server): don't drop sticky PR fallback when remote URL can't be resolved (pingdotgg#4289) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): copy branch name via right-click in the branch selector (pingdotgg#4275) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add remote server updates and standalone service management (pingdotgg#4286) Co-authored-by: codex <codex@users.noreply.github.com> * Refine light-mode sidebar surfaces (pingdotgg#4268) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): don't mark Android VPN/Tailscale as offline when connected (pingdotgg#3949) * improve and prevent silent thread branch drift and PR fetching (pingdotgg#2284) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): refresh application surfaces * style(web): polish dark mode dialogs * fix(web): unify and tune glass surfaces Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): apply glass opacity to thread tooltip * fix(web): override thread tooltip background * fix(web): apply glass opacity to model picker * style(web): polish glass opacity slider * fix(web): apply glass opacity to command palette * fix(web): add glass composer alerts * fix(web): honor composer glass opacity * test(web): stabilize timeline module setup * style(web): fade settings content beneath navbar * test(desktop): include glass opacity in settings fixture * fix(web): address redesign review findings * fix(web): sync provider banner dismissal * fix(web): new-thread defaults ignored for remote environments (pingdotgg#4276) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat: add "Auto" runtime mode — AI-reviewed approvals for Codex and Claude (pingdotgg#4272) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add shared t3.json project configuration support (pingdotgg#4317) * Restore light-mode surfaces and refine dialog styling - Restore light-mode glass, dialog, dropdown, and composer colors - Refine provider wizard, changed-file cards, sidebar controls, and buttons - Update wizard step tests for the new list structure * Unify dialog glass and fix composer overlays (pingdotgg#4365) Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): warn before silent Windows updates (pingdotgg#4350) * [codex] Move project grouping to General settings (pingdotgg#4313) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Group project scopes in mobile thread lists (pingdotgg#4314) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Move mobile project grouping to General settings (pingdotgg#4315) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Deduplicate connection failure messaging (pingdotgg#4367) Co-authored-by: codex <codex@users.noreply.github.com> * Restore grouped project filtering in Sidebar V2 (pingdotgg#4282) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * [codex] restore Sidebar V2 project actions (pingdotgg#4373) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Group projects in new-thread pickers (pingdotgg#4312) Co-authored-by: codex <codex@users.noreply.github.com> * fix(web): restore dark composer toolbar styling * Fix thread tooltip folder icon color (pingdotgg#4383) * fix(server): parse CLI version in update preflight (pingdotgg#4389) * fix(web): sidebar v2 polish — jump hints, working duration, in-flight fade, settled sort (pingdotgg#4274) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix logical project grouping labels on mobile (pingdotgg#4391) Co-authored-by: codex <codex@users.noreply.github.com> * Add preview color scheme controls and simplify project grouping (pingdotgg#4385) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(cli): publish nightly branded favicons (pingdotgg#4372) * Fix thread loading flash (pingdotgg#4396) * fix(client-runtime): keep a warm thread un-settled despite a merged/closed PR (pingdotgg#4309) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix composer context strip alignment and glass shell (pingdotgg#4404) * Polish iOS git progress overlay with glass effects (pingdotgg#4387) * Improve composer glass fallbacks (pingdotgg#4406) Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): collapse large git diffs by default to make chat more readable (pingdotgg#4409) * Stop new threads inheriting checkout/branch from viewed thread (pingdotgg#4411) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: tone down branch-mismatch banner (pingdotgg#4416) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix: Claude Code skills discoverable for the composer $ picker (pingdotgg#4414) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): keep settled threads reachable when opened directly (pingdotgg#4413) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(sidebar-v2): thread snoozing (pingdotgg#4311) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: maria <maria@kuuro.net> * Upgrade Clerk packages and Expo integration (pingdotgg#4440) * Increase light-mode contrast for user message bubbles (pingdotgg#4441) * Restore model picker layout and retain iterative test state (pingdotgg#4450) Co-authored-by: codex <codex@users.noreply.github.com> * Color settled PR labels on hover (pingdotgg#4451) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Fix glass hover compositing artifacts (pingdotgg#4446) Co-authored-by: codex <codex@users.noreply.github.com> * Add Claude Opus 5 model (pingdotgg#4472) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Theo Browne <me@t3.gg> * feat(web): add collapse-all toggle to diff panel (pingdotgg#4475) * feat(web): show fast mode as a bolt instead of a "Normal" label (pingdotgg#4488) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(dev): keep worktree dev state isolated on T3 Code dev servers (pingdotgg#4555) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(dev): Make t3 code dev instances shareable over Tailscale (pingdotgg#4556) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(dev): skip browser-blocked ports (pingdotgg#4608) * fix: cut websocket throughput in half by pruning activity payloads (pingdotgg#4622) * perf(mobile): defer work-log detail serialization (pingdotgg#4607) * test: account for lazy thread feed details (pingdotgg#4628) * feat(relay): limit managed tunnels per user (pingdotgg#4530) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add managed tunnel limits migration (pingdotgg#4635) * Add background preview capture and picture-in-picture support (pingdotgg#4397) Co-authored-by: codex <codex@users.noreply.github.com> * feat(web): prompt stash — cmd+S saves the composer to a per-provider queue (pingdotgg#4453) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Upgrade Effect and Alchemy betas (pingdotgg#4643) Prepare Relay production infrastructure for the PlanetScale PS_20 HA topology, upgrade Effect and Alchemy to compatible betas, reconcile migration state, and preserve patched MCP session termination behavior.\n\nCo-authored-by: codex <codex@users.noreply.github.com> * feat: allow new thread creation through project breadcrumbs (pingdotgg#4638) * fix(web): scope PR state to the thread branch (pingdotgg#4460) Co-authored-by: codex <codex@users.noreply.github.com> * Drop redundant Relay user indexes (pingdotgg#4648) Co-authored-by: codex <codex@users.noreply.github.com> * feat(connect): release the Cloudflare tunnel when the environment shuts down (pingdotgg#4531) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix Relay Worker RuntimeContext wiring (pingdotgg#4653) Co-authored-by: codex <codex@users.noreply.github.com> * Fix live sidebar resize limits and defer Alchemy runtime context (pingdotgg#4655) * fix(web): constrain branch toolbar context (pingdotgg#4657) * Keep MCP credentials alive across provider turns (pingdotgg#4659) * fix: close actions dropdown when editing (pingdotgg#4660) * fix(preview): stabilize PiP viewport identity (pingdotgg#4661) Co-authored-by: codex <codex@users.noreply.github.com> * Add glass styling for thread tooltips and simplify preview tab handling (pingdotgg#4665) * Use tarball archiving for hosted web deploys (pingdotgg#4669) * fix(server): bound editor discovery during config loading (pingdotgg#4291) * Prevent draft thread detail polling before shell registration (pingdotgg#4670) Co-authored-by: codex <codex@users.noreply.github.com> * feat: add configurable source control writing settings (pingdotgg#4204) Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * feat(diff-panel): show total line additions and deletions (pingdotgg#4674) * Clear provider update actions while updating (pingdotgg#4676) * Fix sidebar highlighting for draft threads (pingdotgg#4679) * Use glass surfaces for web toasts (pingdotgg#4681) * Show origin ref in branch trigger label (pingdotgg#4680) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): match react version to react-native 0.85.3 vendored renderer (19.2.3) (pingdotgg#4675) * chore(release): prepare v0.0.29 * Add OTA update checks to mobile settings (pingdotgg#4686) * fix(mobile): threads load snapped to bottom on iOS (pingdotgg#4689) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat: default sidebar v2 on for nightly and dev builds (pingdotgg#4491) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(web): 33 web UI fixes (pingdotgg#4700) * Make mobile Thread List v2 the default (pingdotgg#4717) * Fix mobile showcase workflow without Clerk (pingdotgg#4718) * Fix relay credential lookup for unlinked environments (pingdotgg#4692) Co-authored-by: codex <codex@users.noreply.github.com> * Settle merged PR threads immediately (pingdotgg#4704) * feat(web): add maria's sidebar header artwork toggle (pingdotgg#4652) * feat(web): add appearance settings category (pingdotgg#4715) * fix(desktop): allow updater-controlled relaunch (pingdotgg#4721) * fix(web): prevent diff panel scroll jumping (pingdotgg#4724) * Link inline code file paths in chat markdown (pingdotgg#4726) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix Android showcase capture and rebuild v2 queued rows (pingdotgg#4730) Co-authored-by: Claude <noreply@anthropic.com> * perf(server): negotiate permessage-deflate on the websocket (pingdotgg#4705) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * docs: overhaul agent guidance (pingdotgg#4782) * Prevent sidebar row labels from truncating (pingdotgg#4789) * perf(server): gzip large thread snapshots (pingdotgg#4788) * fix(web): stashed prompts now survive switching providers (pingdotgg#4787) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix Git ref refresh resource storms (pingdotgg#4727) Co-authored-by: codex <codex@users.noreply.github.com> * perf(server): trim stale context-window rows and drop dead replay RPC (pingdotgg#4791) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): defer command palette filesystem navigation (pingdotgg#2109) Co-authored-by: codex <codex@users.noreply.github.com> * fix(release): skip scripts during Vercel installs (pingdotgg#4796) * refactor(client): share filesystem browse navigation (pingdotgg#4797) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): defer filesystem navigation (pingdotgg#4799) Co-authored-by: codex <codex@users.noreply.github.com> * refactor(server): use native HTTP compression streams (pingdotgg#4798) Co-authored-by: codex <codex@users.noreply.github.com> * Remove Connect waitlist and add GA announcement tooling (pingdotgg#4691) * Fix Connect sign-in settings label (pingdotgg#4806) * chore(release): prepare v0.0.30 * fix(desktop): restore T3 Connect sign-in (pingdotgg#4809) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Simplify files panel header (pingdotgg#4828) * build(desktop): reduce installed app size by ~300MB (pingdotgg#4824) * Update model version from claude-opus-4-8 to claude-opus-5 (pingdotgg#4832) * Preserve the thread shell while detail loads (pingdotgg#4830) * Reduce idle work and disk churn with native resource diagnostics (pingdotgg#2679) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): detect repositories after initialization (pingdotgg#4848) * perf(server): merge separate staged/unstaged numstat calls into single diff HEAD --numstat (pingdotgg#4843) * fix(git): disable external diff for review diff previews (pingdotgg#4854) * Fix editable file focus and live syntax highlighting (pingdotgg#3979) * fix(web): remember the rendered-markdown choice across threads (pingdotgg#4853) Co-authored-by: Simon Doba <simon.doba@orbit.de> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> * chore(release): prepare v0.0.31 * fix(mobile): reduce thread feed scroll jank (pingdotgg#4874) * fix(web): restore sidebar v2 thread actions and terminal icon (pingdotgg#4712) * fix(web): settle button now works on hover, not just right-click (pingdotgg#4905) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(clients): disable add project while disconnected (pingdotgg#4834) * fix(composer): hide default Codex service tier (pingdotgg#4784) * docs: link iOS and Android app store downloads (pingdotgg#4902) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): align remote server update action (pingdotgg#4731) * fix(connect): suggest a serve command that matches how you ran connect (pingdotgg#4897) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): stop shared content errors in Personal Team builds (pingdotgg#4943) * perf(mobile): sends respond instantly, thread opens stop freezing (pingdotgg#4882) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): show Codex fast mode as a bolt (pingdotgg#4947) * docs: seed worktrees with a copy of real userdata instead of banning it (pingdotgg#4949) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): support dragged images in the composer (pingdotgg#4953) * fix(mobile): stop long iOS threads from jumping while scrolling up (pingdotgg#4867) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): keep worktree default when switching a draft's machine (pingdotgg#4964) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * perf(mobile): reconnect environments immediately on resume (pingdotgg#4878) * feat(web): pasting a huge screenshot now compresses it instead of erroring (pingdotgg#4967) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): regenerate thread titles from sidebar (pingdotgg#4810) * fix(web): show server update progress through reconnect (pingdotgg#4903) * feat(search): find threads by conversation content (pingdotgg#4959) * fix: marketing site Vercel builds no longer die after ~100 deploys (pingdotgg#4975) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * docs: split user and maintainer docs, fix 100+ stale claims (pingdotgg#4807) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): server updates no longer look like warnings (pingdotgg#4992) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(connect): reboots no longer strand the relay link, 403s now say why (pingdotgg#4988) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add project file picker (⌘P) and project content search (⇧⌘F) (pingdotgg#4855) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * Check for mobile app updates on launch (pingdotgg#4958) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (pingdotgg#4984) * fix(server): restore PR detection without HOME (pingdotgg#4985) * fix(web): fill fast mode icon (pingdotgg#5004) * fix: cache project favicons across web and mobile (pingdotgg#4767) * perf(ci): cut stale runs and redundant setup (pingdotgg#4802) * chore(mobile): bump app version to 1.0.1 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * style(web): make scroll-to-end pill translucent (pingdotgg#5036) * fix(ci): drop sparse-checkout from EAS workflows actions/checkout implements sparse-checkout with --filter=blob:none, so the runner repo is a partial clone missing the .repos/ blobs. eas-cli archives the project via `git clone --depth 1 file://<workspace>`, which upload-pack cannot serve from a partial clone and exits 128 (pingdotgg#4802 broke both EAS build workflows this way). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:// scheme on Linux (pingdotgg#5015) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * perf(server): cache default branch name and origin existence across status refreshes (pingdotgg#5008) * feat(shared): support shorthand (major-only) versions in the semver helpers (pingdotgg#5027) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(mobile): remove unnecessary photo library permission (pingdotgg#4929) * fix(shared): lenient JSON parser deletes commas inside string values (pingdotgg#5025) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(mobile): default bare IP pairing to HTTP (pingdotgg#4990) * fix(mobile): restore iOS Threads branding (pingdotgg#4862) * chore: add mobile issue template area (pingdotgg#4895) * fix(desktop): link release notes from the update downloaded toast (pingdotgg#4771) Co-authored-by: Claude Opus 5 <noreply@anthropic.com> * fix(mobile): accept Android clipboard images in composer (pingdotgg#4836) * fix(mobile): show the correct build channel in Android's Threads page header (pingdotgg#4861) * fix(contracts): decode growing config unions forward-compatibly (pingdotgg#5055) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): server model, worktree, and origin preferences now apply to new tasks (pingdotgg#5064) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(ci): repair the mobile showcase screenshots workflow (pingdotgg#5057) * fix(ci): capture iPad App Store screenshots in landscape (pingdotgg#5065) * fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm layout (pingdotgg#5066) * feat(cli): `npx t3 pair` - generate QR code from a running server (pingdotgg#4955) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(server): self-update no longer rolls itself back on restart (pingdotgg#5095) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(ci): rotate iPad showcase captures without Simulator UI scripting (pingdotgg#5094) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): render terminals with libghostty-vt (pingdotgg#4860) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * refactor: move the canonical libghostty-vt vendor to the repository root (pingdotgg#5102) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(mobile): add thread snoozing (pingdotgg#5053) * feat(mobile): make settled threads collapsible (pingdotgg#5056) * follow-up normalization after pingdotgg#4700. (pingdotgg#4498) Co-authored-by: T3 Code Test <t3code-test@example.com> * feat(web): search threads from the sidebar (pingdotgg#4769) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(release): prepare Command Center desktop v1 * fix(ci): allow public release publisher identity * fix(web): avoid Windows preview path collision * test(release): reject Windows module path collisions * fix(release): bundle command center core * fix: audit preserved upstream history safely * feat(providers): add Kimi, subagents, and usage analytics * fix(ci): repair reconnects and PNG safety scanning * test(desktop): update Clerk environment fixture * fix(ci): align provider and server integration contracts * perf(web): skip impossible image encodings * fix command center chats on native desktop hosts --------- Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: Tristan Knight <tris203@gmail.com> Co-authored-by: Christoph Herzog <a.github@omega-id.com> Co-authored-by: Andrew Barnes <bortstheboat@gmail.com> Co-authored-by: Shoaib <shoaib050326@gmail.com> Co-authored-by: Shoaib Ansari <shoaibansari@Shoaibs-Mac-mini.local> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com> Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: root <root@localhost.localdomain> Co-authored-by: Andrew Forster <76947376+Andrew-Forster@users.noreply.github.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Chris Michael Guzman <67719167+Chrrxs@users.noreply.github.com> Co-authored-by: Vadym Kotai <vdmkotai@gmail.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Maxwell Young <maxtheyoung@gmail.com> Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com> Co-authored-by: Rhiz3K <rhiz3k@protonmail.com> Co-authored-by: Anirudh Coontoor <me@anirudhs.net> Co-authored-by: Rusiru Sadathana <rusirusadathana@gmail.com> Co-authored-by: ss <69873514+sandersonstabo@users.noreply.github.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Leonel Rivas <encriptandost@gmail.com> Co-authored-by: Jaret Bottoms <jaretbottoms@gmail.com> Co-authored-by: Ishan <ishansachu1@gmail.com> Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com> Co-authored-by: Miklós Fazekas <mfazekas@szemafor.com> Co-authored-by: Henry Zhang <113233555+caezium@users.noreply.github.com> Co-authored-by: Rushikesh Gaikwad <81632222+Wraient@users.noreply.github.com> Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> Co-authored-by: tomlit <tomlit@gmail.com> Co-authored-by: jan <hi@4bs3nt.com> Co-authored-by: Alex Southwell <saphid@gmail.com> Co-authored-by: Max Katz <me@maxkatz.me> Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Alex <me@pixp.cc> Co-authored-by: wukko <me@wukko.me> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: ohbentos <72638975+ohbentos@users.noreply.github.com> Co-authored-by: Jake Leventhal <jakeleventhal@me.com> Co-authored-by: Simon Doba <simon.doba@hotmail.de> Co-authored-by: Simon Doba <simon.doba@orbit.de> Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com> Co-authored-by: Jono Kemball <Noojuno@users.noreply.github.com> Co-authored-by: Arham Amin <132888838+arhxam@users.noreply.github.com> Co-authored-by: Elaine Lyons <elaine@lyons.app> Co-authored-by: Simone <lucenz@proton.me> Co-authored-by: Max Anderson <max.a.anderson95@gmail.com> Co-authored-by: Aditya Vardhan Sharma <adityaradhika13@gmail.com> Co-authored-by: Mike Olson <mwolson@member.fsf.org> Co-authored-by: T3 Code Test <t3code-test@example.com> Co-authored-by: atryan <atryan@users.noreply.github.com>


Summary
The Mobile Showcase Screenshots workflow's iOS job fails on main (run): #5065 rotates the iPad simulator by AppleScript-clicking Simulator's menus, and the CI runner denies osascript the required macOS Accessibility permission:
simctlhas no orientation command (checked through Xcode 26.5), so this replaces UI scripting with in-app rotation. Getting there surfaced a chain of iPadOS constraints; the fix has four pieces:t3-native-controlsgainsgetShowcaseOrientation(reads a--showcaseOrientationlaunch arg the harness now passes),applyShowcaseOrientation(UIWindowScene.requestGeometryUpdate), andgetInterfaceOrientationsoShowcaseCaptureCoordinatorcan verify the rotation took effect and retry. Scene readiness is gated on the orientation having settled, and the orientation getter reports from screen bounds (which mirror the captured framebuffer) — a failed rotation now times out loudly instead of shipping wrong-size screenshots.requireFullScreeninapp.config.ts, gated onT3_SHOWCASE_CAPTURE_BUILD=1which only the showcase harness sets — production builds are unchanged. (The Expo config key really isrequireFullScreenin config-plugins 56; therequiresFullScreenspelling is silently ignored.)simctl spawn defaults— writing all three SpringBoard keys the Settings toggle writes (SBChamoisWindowingEnabled,SBMedusaMultitaskingEnabled,SBFlexibleWindowingPreviouslyEnabledAutomaticStageCreation; the first alone is ignored on a freshly created device), then reboots the device and verifies the mode stuck.The osascript helper and the unconditional
sips --rotate 90are gone.Verification
@t3tools/scripts/@t3tools/mobiletypechecks and the 197 scripts tests.🤖 Generated with Claude Code